package me.zhengjie.modules.utils;

import cn.hutool.core.date.DateTime;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class DateUtils {
    /**
     * yyyy-MM-dd 只有日期格式的时间
     * @param date
     * @return
     */
    public static String formatDate(Date date){
        SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");
        return sim.format(date);
    }

    /**
     * yyyy-MM-dd hh:mm:ss 详细时间
     * @param date
     * @return
     */
    public static String formatDateTime(Date date){
        SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        return sim.format(date);
    }

    /**
     * yyyy-MM-dd hh:mm:ss sss 精确到毫秒
     * @param date
     * @return
     */
    public static String formatDateTimeMs(Date date){
        SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss sss");
        return sim.format(date);
    }

    /**
     * 将字符串转为长整型再转为日期时间格式
     * @param time
     * @return
     */
    public static Date StringToDateTime(String time){
        if(time==null){
            return null;
        }
        if(time.equals("")){
            return null;
        }
        if(time==""){
            return null;
        }
        return new DateTime(Long.parseLong(time));
    }

    /**
     * 将长整形数值转为日期格式
     * @param time
     * @return
     */
    public static Date LongToDateTime(Long time){
        if (time==null){
            return null;
        }
        if(time.toString()==""){
            return null;
        }
        return new DateTime(time);
    }

    //近5年
    public static List<String> getYear(){
        Date date=new Date();
        SimpleDateFormat format=new SimpleDateFormat("yyyy");
        Integer year=Integer.valueOf(format.format(date));
        List<String> list=new ArrayList<>();
        for (int i=5;i>0;i--){
            list.add(String.valueOf(year-i));
        }
        return list;
    }

    public static List<String> getYear(Date estiblishTime){
        Date date=new Date();
        SimpleDateFormat format=new SimpleDateFormat("yyyy");
        Integer year=Integer.valueOf(format.format(date));
        Integer time=Integer.valueOf(format.format(estiblishTime));
        List<String> list=new ArrayList<>();
        for (int i=0;i<=year-time;i++){
            list.add(String.valueOf(year-i));
        }
        return list;
    }

    /**
     * 近几年
     * @return
     */
    public static String getNewYear(Integer num){
        Date date=new Date();
        SimpleDateFormat format=new SimpleDateFormat("yyyy");
        Integer year=Integer.valueOf(format.format(date))-num;
        return String.valueOf(year);
    }
}
